﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DAL;

namespace BLL
{
    public class NhanVienBUO:IBUO<tbl_NhanVien>
    {
        CSDLBanHangDataContext context = new CSDLBanHangDataContext();

        public bool Insert(tbl_NhanVien obj)
        {
            try
            {
                context.tbl_NhanViens.InsertOnSubmit(obj);
                context.SubmitChanges();
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }

        public bool Delete(String id)
        {
            throw new NotImplementedException();
        }

        public bool Delete(tbl_NhanVien obj)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// load all database
        /// </summary>
        /// <returns></returns>
        public List<tbl_NhanVien> GetAll()
        {
            return context.tbl_NhanViens.OrderByDescending(n => n.id_NhanVien).ToList();
        }

        public tbl_NhanVien GetSingle(String id)
        {
            return context.tbl_NhanViens.Where(p => p.id_NhanVien.Trim() == id.Trim()).FirstOrDefault();
        }

        public bool Update(String id, tbl_NhanVien obj)
        {
            tbl_NhanVien nv = context.tbl_NhanViens.Where(p => p.id_NhanVien == id.Trim()).FirstOrDefault();
            nv.TenNhanVien = obj.TenNhanVien;
            nv.NgaySinh = obj.NgaySinh;
            nv.SoDienThoai = obj.SoDienThoai;
            nv.DiaChi = obj.DiaChi;

            context.SubmitChanges();
            return true;
        }

        public List<tbl_NhanVien> searchByTenNV(String name)
        { 
            List<tbl_NhanVien> list = new List<tbl_NhanVien>();
            List<tbl_NhanVien> all = GetAll();

            if (all.Count > 0)
            { 
                foreach(tbl_NhanVien a in all)
                {
                    if (a.TenNhanVien.ToLower().Trim().Contains(name.ToLower().Trim()))
                    {
                        list.Add(a);
                    }
                }
            }
            return list;
        }

        public List<tbl_NhanVien> searchByMaNV(String ma)
        {
            return context.tbl_NhanViens.Where(p => p.id_NhanVien.ToLower().Trim().Contains(ma.ToLower().Trim())).ToList<tbl_NhanVien>();
        }

        public tbl_NhanVien showNhanVien(String idNV)
        {
            return context.tbl_NhanViens.Where(p => p.id_NhanVien.Trim() == idNV.Trim()).FirstOrDefault();
        }
    }
}
